home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************/
- /* */
- /* TurboCAD for Windows */
- /* Copyright (c) 1993 - 2001 */
- /* International Microcomputer Software, Inc. */
- /* (IMSI) */
- /* All rights reserved. */
- /* */
- /******************************************************************/
-
- // SmartObjectInserDlg.cpp : implementation file
- //
-
- #include "stdafx.h"
- #include "ltsample.h"
- #include "SmartObjectInserDlg.h"
-
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
-
- /////////////////////////////////////////////////////////////////////////////
- // CSmartObjectInserDlg dialog
-
- #define W_COLUMN 20
-
- #define IND_SUBITEMINDEX 0
- #define IND_SUBITEMID 1
- #define IND_SUBITEMTYPE 2
- #define IND_SUBITEMNAME 3
- #define IND_SUBITEMDESC 4
-
- #define IND_COLUMNINDEX 0
- #define IND_COLUMNID 1
- #define IND_COLUMNTYPE 2
- #define IND_COLUMNAME 3
- #define IND_COLUMNDESC 4
-
-
- CSmartObjectInserDlg::CSmartObjectInserDlg(RegenMethods *pRegens, CWnd* pParent /*=NULL*/)
- : CDialog(CSmartObjectInserDlg::IDD, pParent)
- {
- m_pRegens = pRegens;
- m_dwID = 0;
- m_rmType = imsiVTbl;
- //{{AFX_DATA_INIT(CSmartObjectInserDlg)
- // NOTE: the ClassWizard will add member initialization here
- //}}AFX_DATA_INIT
- }
-
-
- void CSmartObjectInserDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CSmartObjectInserDlg)
- DDX_Control(pDX, IDC_LIST_SMARTOBJECT, m_lstRegens);
- //}}AFX_DATA_MAP
- if (pDX->m_bSaveAndValidate)
- {
- int iSelItem = m_lstRegens.GetNextItem(-1, LVNI_SELECTED);
- if (iSelItem >= 0)
- {
- m_dwID = m_lstRegens.GetItemData(iSelItem);
- m_cstrName = m_lstRegens.GetItemText(iSelItem, IND_SUBITEMNAME);
- m_cstrDesc = m_lstRegens.GetItemText(iSelItem, IND_SUBITEMDESC);
- CString cstrType = m_lstRegens.GetItemText(iSelItem, IND_SUBITEMTYPE);
- if (cstrType == "imsiAutomation")
- m_rmType = imsiAutomation;
- else if (cstrType == "imsiVTbl")
- m_rmType = imsiVTbl;
- else if (cstrType == "imsiScript")
- m_rmType = imsiScript;
- }
- }
- }
-
-
- BEGIN_MESSAGE_MAP(CSmartObjectInserDlg, CDialog)
- //{{AFX_MSG_MAP(CSmartObjectInserDlg)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
- /////////////////////////////////////////////////////////////////////////////
- // CSmartObjectInserDlg message handlers
-
- BOOL CSmartObjectInserDlg::OnInitDialog()
- {
- CDialog::OnInitDialog();
-
- LV_COLUMN lvcolumn;
- lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
- lvcolumn.fmt = LVCFMT_LEFT;
-
- CString sResString;
- sResString.LoadString(IDS_REGEN_INDEX);
- lvcolumn.pszText = (LPTSTR)(LPCTSTR)sResString;
- lvcolumn.iSubItem = IND_SUBITEMINDEX;
- lvcolumn.cx = W_COLUMN * 4;
- m_lstRegens.InsertColumn(IND_COLUMNINDEX, &lvcolumn); // assumes return value is OK.
-
- sResString.LoadString(IDS_REGEN_ID);
- lvcolumn.pszText = (LPTSTR)(LPCTSTR)sResString;
- lvcolumn.iSubItem = IND_SUBITEMID;
- lvcolumn.cx = W_COLUMN * 4;
- m_lstRegens.InsertColumn(IND_COLUMNID, &lvcolumn); // assumes return value is OK.
-
-
- sResString.LoadString(IDS_REGEN_TYPE);
- lvcolumn.pszText = (LPTSTR)(LPCTSTR)sResString;
- lvcolumn.iSubItem = IND_SUBITEMTYPE;
- lvcolumn.cx = W_COLUMN * 4;
- m_lstRegens.InsertColumn(IND_COLUMNTYPE, &lvcolumn); // assumes return value is OK.
-
- sResString.LoadString(IDS_REGEN_NAME);
- lvcolumn.pszText = (LPTSTR)(LPCTSTR)sResString;
- lvcolumn.cx = W_COLUMN * 4;
- lvcolumn.iSubItem = IND_SUBITEMNAME;
- m_lstRegens.InsertColumn(IND_COLUMNAME, &lvcolumn); // assumes return value is OK.
-
- sResString.LoadString(IDS_REGEN_DESCRIPTION);
- lvcolumn.pszText = (LPTSTR)(LPCTSTR)sResString;
- lvcolumn.cx = W_COLUMN * 5;
- lvcolumn.iSubItem = IND_SUBITEMDESC;
- m_lstRegens.InsertColumn(IND_COLUMNDESC, &lvcolumn); // assumes return value is OK.
-
-
- long lCount = 0;
- HRESULT hRes = m_pRegens->get_Count(&lCount);
- if (SUCCEEDED(hRes))
- {
- RegenMethod *pRegen = NULL;
- CString cstrText;
- BSTR bstrVal = NULL;
- long lVal = 0;
- long lID = 0;
- ImsiRegenMethodType rmtVal = imsiVTbl;
- BOOL bVal = FALSE;
- SHORT iVal = 0;
-
-
- VARIANT varIndex;
- ::VariantInit(&varIndex);
- varIndex.vt = VT_I4;
-
- LV_ITEM lvitem;
- int index = 0;
-
- for (long iItem = 0; iItem < lCount; iItem++)
- {
- varIndex.lVal = iItem;
- hRes = m_pRegens->get_Item(&varIndex, &pRegen);
- if (SUCCEEDED(hRes))
- {
- ASSERT(pRegen != NULL);
-
- lvitem.mask = LVIF_TEXT;
- lvitem.iItem = index;
-
- lvitem.iSubItem = IND_SUBITEMINDEX;
- hRes = pRegen->get_Index(&lVal);
- if (SUCCEEDED(hRes))
- cstrText.Format("%d", lVal);
- else
- cstrText = "?";
- lvitem.pszText = (LPTSTR)(LPCTSTR)cstrText;
- index = m_lstRegens.InsertItem(&lvitem);
- ASSERT(index >= 0);
-
- lvitem.iSubItem = IND_SUBITEMID;
- hRes = pRegen->get__TableEntryID(&lVal);
- cstrText.Format("%d", lVal);
- lvitem.pszText = (LPTSTR)(LPCTSTR)cstrText;
- VERIFY(m_lstRegens.SetItem(&lvitem));
- m_lstRegens.SetItemData(index, lVal);
-
- lvitem.iSubItem = IND_SUBITEMTYPE;
- hRes = pRegen->get_Type(&rmtVal);
- switch (rmtVal)
- {
- case imsiVTbl:
- cstrText.Format("imsiVTbl");
- break;
- case imsiAutomation:
- cstrText.Format("imsiAutomation");
- break;
- case imsiScript:
- cstrText.Format("imsiScript");
- break;
- }
- lvitem.pszText = (LPTSTR)(LPCTSTR)cstrText;
- VERIFY(m_lstRegens.SetItem(&lvitem));
-
- hRes = pRegen->get_Name(&bstrVal);
- ASSERT(SUCCEEDED(hRes));
- lvitem.iSubItem = IND_SUBITEMNAME;
- cstrText = bstrVal;
- ::SysFreeString(bstrVal);
- lvitem.pszText = (LPTSTR)(LPCTSTR)cstrText;
- VERIFY(m_lstRegens.SetItem(&lvitem));
-
- bstrVal = NULL;
- hRes = pRegen->get_Description(&bstrVal);
- ASSERT(SUCCEEDED(hRes));
- lvitem.iSubItem = IND_SUBITEMDESC;
- cstrText = bstrVal;
- ::SysFreeString(bstrVal);
- lvitem.pszText = (LPTSTR)(LPCTSTR)cstrText;
- VERIFY(m_lstRegens.SetItem(&lvitem));
-
- index++;
-
- pRegen->Release();
- }
- }
- }
-
- return TRUE; // return TRUE unless you set the focus to a control
- // EXCEPTION: OCX Property Pages should return FALSE
- }
-